

---@class Guid
local Guid = {}



---@class Object
---@field assetMgr AssetManager
---@field guid Guid
---@field name string
local Object = {}
---@return Object
function Object:clone () end
---@param name string
---@return boolean
function Object:isInstanceOf (name) end



---@class AssetManager : Object
---@field rootDir string
local AssetManager = {}
---@param uri string
---@return Object
function AssetManager:SyncLoad (uri) end



---@class Entity : Object
---@field scene Scene
---@field selfvisible boolean
---@field visible boolean
---@field tag number
---@field components Vector
---@field layer number
local Entity = {}
---@param tag number
---@return Entity
function Entity:addTag (tag) end
---@param tag number
---@return boolean
function Entity:hasTag (tag) end
---@param rttiType string
---@return Component
function Entity:addComponent (rttiType) end
---@param rttiType string
---@return boolean
function Entity:removeComponent (rttiType) end
---@param rttiType string
---@return Component
function Entity:getComponent (rttiType) end
---@param rttiType string
---@return Vector
function Entity:getComponents (rttiType) end
---@param rttiType string
---@return Vector
function Entity:getComponentsRecursive (rttiType) end
---@param name string
---@return Entity
function Entity:searchEntity (name) end
---@param other Component
---@return Component
function Entity:cloneComponentOf (other) end




---@class Scene : Object
---@field editSceneGuid Guid
---@field calibrateVer	string
---@field entities	Vector
---@field visible boolean
---@field config Map
---@field msaa	MSAAMode
---@field scriptSystems StringVector
---@field disabledSystems StringVector
---@field enableMultiTouch	boolean
local Scene = {}
---@param name string
---@return Entity
function Scene:createEntity (name) end
---@param entity Entity
---@return boolean
function Scene:removeEntity (entity) end
---@return boolean
function Scene:removeAllEntity () end
---@param srcEntity Entity
---@return Entity
function Scene:cloneEntityFrom (srcEntity) end
---@param name string
---@param root Entity|nil
---@return Entity
function Scene:findEntityBy (name, root) end
---@param name string
---@param root Entity|nil
---@return Vector
function Scene:findEntitiesByName (name, root) end
---@param type string
---@return System
function Scene:getSystem (type) end
---@return RenderTexture
function Scene:getOutputRenderTexture () end
---@param inputType BuiltInTextureType
---@return Texture2D
function Scene:getInputTexture (inputType) end
---@param prefab Prefab
---@return Entity
function Scene:addInstantiatedPrefab (prefab) end
---@param prefab Prefab
---@param entity Entity
---@return Entity
function Scene:addInstantiatedPrefabToEntity (prefab, entity) end



---@class Texture2D : Object
---@field width number
---@field height number
---@field depth number
---@field internalFormat InternalFormat
---@field dataType	DataType
---@field builtinType BuiltInTextureType
---@field filterMin FilterMode
---@field filterMag FilterMode
---@field filterMipmap FilterMipmapMode
---@field wrapModeS WrapMode
---@field wrapModeT WrapMode
---@field wrapModeR WrapMode
local Texture2D = {}
---@param image Image
function Texture2D:storage (image) end



---@class RenderTexture : Texture2D
---@field attachment RenderTextureAttachment
---@field inputTexture Texture2D
---@field massMode MSAAMode
---@field shared boolean
---@field colorFormat PixelFormat
---@field realColorFormat PixelFormat
---@field depthTexture	DrawTexture
---@field stencilTexture DrawTexture
---@field colorTextures Vector
---@field width number
---@field height number
local RenderTexture = {}
---@return boolean
function RenderTexture:getShared () end
---@param value boolean
---@return boolean
function RenderTexture:setShared (value) end
---@param filepath string
---@return boolean
function RenderTexture:saveToFile (filepath) end



---@class DrawTexture : Texture2D
---@field colorFormat PixelFormat
---@field realColorFormat PixelFormat
local DrawTexture = {}



---@class System : Object
---@field scene Scene
local System = {}
---@param b boolean
---@return System
function System:setEnable (b) end



---@class Prefab : Object
---@field entities Vector
---@field standaloneResources Map
local Prefab = {}



---@class PrefabManager : Object
local PrefabManager = {}
---@param path string
---@param name string
---@return Prefab
function PrefabManager.loadPrefab (path, name) end



---@class BuiltinObject : Object
local BuiltinObject = {}
---@return number
function BuiltinObject.getInputTextureWidth () end
---@return number
function BuiltinObject.getInputTextureHeight () end
---@return number
function BuiltinObject.getOutputTextureWidth () end
---@return number
function BuiltinObject.getOutputTextureHeight () end
---@param name string
---@return Texture2D
function BuiltinObject.getUserTexture (name) end
---@param type BuiltInTextureType
---@param id number
---@return number
function BuiltinObject.getBuiltinTexture (type, id) end
---@return boolean
function BuiltinObject.isAndroid () end



---@class Material : Object
---@field xshader XShader
---@field renderQueue number
---@field passes Vector
---@field enabledMacros Map
local Material = {}
---@return number
function Material:getInt (name) end
---@param name string
---@param value number
function Material:setInt (name, value) end
---@return number
function Material:getFloat (name) end
---@param name string
---@param value number
function Material:setFloat (name, value) end
---@return Vector2f
function Material:getVec2 (name) end
---@param name string
---@param value Vector2f
function Material:setVec2 (name, value) end
---@return Vector3f
function Material:getVec3 (name) end
---@param name string
---@param value Vector3f
function Material:setVec3 (name, value) end
---@return Vector4f
function Material:getVec4 (name) end
---@param name string
---@param value Vector4f
function Material:setVec4 (name, value) end
---@return Matrix4x4f
function Material:getMat4 (name) end
---@param name string
---@param value Matrix4x4f
function Material:setMat4 (name, value) end
---@return Texture2D
function Material:getTex (name) end
---@param name string
---@param value Texture2D
function Material:setTex (name, value) end
---@param macro string
---@param value number
---@return number
function Material:enableMacro (macro, value) end
---@param macro string
---@return number
function Material:disableMacro (macro) end
---@param passIndex number
---@param enabled boolean
function Material:setPassEnabled (passIndex, enabled) end
---@param passIndex number
---@return boolean
function Material:getPassEnabled (passIndex) end
---@param name string
---@param key string
function Material:setTexFromKey (name, key) end



---@class XShader : Object
---@field renderQueue number
---@field passes Vector
---@field renderQueue number
---@field renderQueue number
---@field renderQueue number
---@field renderQueue number
local XShader = {}



---@class Pass : Object
---@field shaders Map
---@field semantics Map
---@field renderTexture RenderTexture
---@field clearColor Color
---@field clearDepth number
---@field clearType CameraClearType
---@field renderState RenderState
---@field useFBOTexture boolean
---@field useCameraRT boolean
---@field useFBOFetch boolean
---@field isFullScreenShading boolean
---@field preprocess boolean
---@field macrosMap Map
---@field passType PassType
local Pass = {}



---@class RenderState : Object
---@field viewport ViewportState
---@field scissor ScissorState
---@field rasterization RasterizationState
---@field depthstencil DepthStencilState
---@field colorBlend ColorBlendState
local RenderState = {}



---@class ViewportState : Object
---@field rect Rect
---@field minDepth number
---@field maxDepth number
---@field portValueType PortValueType
local ViewportState = {}



---@class ScissorState : Object
---@field rect Rect
---@field portValueType PortValueType
local ScissorState = {}



---@class RasterizationState : Object
---@field depthClampEnable boolean
---@field rasterizerDiscardEnable boolean
---@field polygonMode PolygonMode
---@field cullMode CullFace
---@field frontFace FrontFace
---@field depthBiasEnable boolean
---@field depthBiasConstantFactor number
---@field depthBiasClamp number
---@field depthBiasSlopeFactor number
---@field lineWidth number
---@field depthClampEnable boolean
local RasterizationState = {}



---@class DepthStencilState : Object
---@field depthTestEnable boolean
---@field depthWriteEnable boolean
---@field stencilTestEnable boolean
---@field depthCompareOp CompareOp
---@field stencilFront StencilOpState
---@field stencilBack CompareOp
local DepthStencilState = {}



---@class StencilOpState : Object
---@field failOp StencilOp
---@field passOp StencilOp
---@field depthFailOp StencilOp
---@field compareOp CompareOp
---@field compareMask number
---@field writeMask number
---@field reference number
local StencilOpState = {}



---@class ColorBlendState : Object
---@field blendConstants Vector4f
---@field attachments Vector
local ColorBlendState = {}



---@class ColorBlendAttachmentState : Object
---@field blendEnable boolean
---@field srcColorBlendFactor BlendFactor
---@field dstColorBlendFactor BlendFactor
---@field srcAlphaBlendFactor BlendFactor
---@field dstAlphaBlendFactor BlendFactor
---@field colorWriteMask number
---@field ColorBlendOp BlendOp
---@field AlphaBlendOp BlendOp
local ColorBlendAttachmentState = {}



---@class Mesh : Object
---@field boundingBox AABB
---@field vertices FloatVector
---@field instanceData FloatVector
---@field instanceDataStride number
---@field materialIndex number
---@field vertexAttribs Vector
---@field skin Skin
---@field morphers Vector
---@field submeshes Vector
---@field clearAfterUpload boolean
local Mesh = {}



---@class SubMesh : Object
---@field useIndices32 boolean
---@field boundingBox AABB
---@field indices16 UInt16Vector
---@field indices32 UInt32Vector
---@field indicesCount number
---@field instanceCount number
---@field primitive Primitive
---@field mesh Mesh
local SubMesh = {}



---@class AMGChar : Object
---@field utf8code string
---@field initialPosition Vector3f
---@field position Vector3f
---@field rotate Vector3f
---@field scale Vector3f
---@field rowth number
---@field idInRow number
---@field width number
---@field height number
---@field anchor Vector2f
---@field transparentRatio number
local AMGChar = {}



---@class TextTexture : Object
---@field sdfTexture RenderTexture
---@field nonsdfTexture Texture2D
---@field charRectMap Map
local TextTexture = {}



---@class Image : Object
---@field alphaPermul boolean
---@field outerAlphaPermul boolean
local Image = {}



---@class AnimSeq : Object
---@field fps number
---@field lazyload boolean
---@field cache boolean
---@field atlases Vector
---@field memoryLimit number
---@field preload boolean
---@field indexAction Map
---@field preloadCount number
local AnimSeq = {}
---@return number
function AnimSeq:getFrameCount () end



---@class Animaz : Object
---@field duration number
---@field startTime number
---@field endTime number
---@field tracks Vector
---@field timeType AnimTimeType
local Animaz = {}
---@param clipId string
---@param begin number
---@param _end number
---@param animator Animator
---@return AnimazClip
function Animaz:getOrCreateClip (clipId, begin, _end, animator) end
---@param clipId string
---@param animator Animator
---@return AnimazClip
function Animaz:getClip (clipId, animator) end
---@param clipId string
---@param animator Animator
---@param wrapMode number
---@param speed number
---@return AnimazClip
function Animaz:playClipByName (clipId, animator, wrapMode, speed) end
---@param clipId string
---@param animator Animator
---@return AnimazClip
function Animaz:pauseClipByName (clipId, animator) end
---@param clipId string
---@param animator Animator
---@return AnimazClip
function Animaz:stopClipByName (clipId, animator) end



---@class AnimazClip : Object
---@field isRestoreOrigVal boolean
local AnimazClip = {}
---@param wrapMode number
function AnimazClip:setWrapMode (wrapMode) end
---@return number
function AnimazClip:getWrapMode () end
---@param speed number
function AnimazClip:setSpeed (speed) end
---@return number
function AnimazClip:getSpeed () end
---@return number
function AnimazClip:getElapsedTime () end
---@return number
function AnimazClip:getStartTime () end
---@return number
function AnimazClip:getEndTime () end
---@return number
function AnimazClip:isPlaying () end
---@return boolean
function AnimazClip:play () end
---@return boolean
function AnimazClip:pause () end
---@return boolean
function AnimazClip:stop () end
---@param seekTime number
---@return boolean
function AnimazClip:seek (seekTime) end
---@param clip AnimazClip
---@param duration number
---@return boolean
function AnimazClip:crossFade (clip, duration) end



---@class CommandBuffer : Object
local CommandBuffer = {}
---@param src Texture2D
---@param dst RenderTexture
---@return CommandBuffer
function CommandBuffer:blit (src, dst) end
---@param src Texture2D
---@param dst RenderTexture
---@param material Material
---@param shaderPass number
---@return CommandBuffer
function CommandBuffer:blitWithMaterial (src, dst, material, shaderPass) end
---@param src Texture2D
---@param dst RenderTexture
---@param material Material
---@param shaderPass number
---@param properties MaterialPropertyBlock
---@return CommandBuffer
function CommandBuffer:blitWithMaterial (src, dst, material, shaderPass, properties) end
---@return CommandBuffer
function CommandBuffer:clearAll () end
---@param clearColor boolean
---@param clearDepth boolean
---@param backgroundColor Color
---@param depth number
---@return CommandBuffer
function CommandBuffer:clearRenderTexture (clearColor, clearDepth, backgroundColor, depth) end
---@param clearColor boolean
---@param clearDepth boolean
---@param clearStencil boolean
---@param backgroundColor Color
---@param depth number
---@param stencil number
---@return CommandBuffer
function CommandBuffer:clearRenderTexture (clearColor, clearDepth, clearStencil, backgroundColor, depth, stencil) end
---@return CommandBuffer
function CommandBuffer:disableScissorRect () end
---@param mesh Mesh
---@param matrix Matrix4x4f
---@param material Material
---@param submeshIndex number
---@param shaderPass number
---@param properties MaterialPropertyBlock
---@return CommandBuffer
function CommandBuffer:drawMesh (mesh, matrix, material, submeshIndex, shaderPass, properties) end
---@param scissor Rect
---@return CommandBuffer
function CommandBuffer:enableScissorRect (scissor) end
---@param name string
---@param value Color
---@return CommandBuffer
function CommandBuffer:setGlobalColor (name, value) end
---@param name string
---@param value number
---@return CommandBuffer
function CommandBuffer:setGlobalFloat (name, value) end
---@param name string
---@param value Vector4f
---@return CommandBuffer
function CommandBuffer:setGlobalVector4f (name, value) end
---@param name string
---@param value Matrix4x4f
---@return CommandBuffer
function CommandBuffer:setGlobalMatrix (name, value) end
---@param name string
---@param value RenderTexture
---@return CommandBuffer
function CommandBuffer:setGlobalTexture (name, value) end
---@param invCulling boolean
---@return CommandBuffer
function CommandBuffer:setInvertCulling (invCulling) end
---@param proj Matrix4x4f
---@return CommandBuffer
function CommandBuffer:setProjectionMatrix (proj) end
---@param target RenderTexture
---@return CommandBuffer
function CommandBuffer:setRenderTexture (target) end
---@param view Matrix4x4f
---@return CommandBuffer
function CommandBuffer:setViewMatrix (view) end
---@param pixelRect Rect
---@return CommandBuffer
function CommandBuffer:setViewport (pixelRect) end
---@return CommandBuffer
function CommandBuffer:endRender () end
---@param view Matrix4x4f
---@param proj Matrix4x4f
---@return CommandBuffer
function CommandBuffer:setViewProjectionMatrices (view, proj) end










